\section{dim}

用于获得数组指定维度的元素数量。

\subsection*{原型}
\begin{verbatim}
num dim(anytype& array[], num dim)
\end{verbatim}

\subsubsection*{array}
数组名称，可以是任意类型。

\subsubsection*{dim}
数组的维度，num类型。数字1表示第一维，数字2表示第二维，数字3表示第三维。

\subsubsection*{返回值}
指定维度的数组元素数。

\subsection*{例子}

\begin{verbatim}
    void main() {
        num dimno;
        pos p1 = {1, 2, 3};
        pos p2 = {2, 3, 4};
        pos p3 = {3, 4, 5};
        pos p4 = {4, 5, 6};
        pos p5 = {5, 6, 7};
        pos p6 = {6, 7, 8};
        pos action[3][2] = {{p1, p2}, {p3, p4}, {p5, p6}};
        dimno = dim(action,1);
        print(dimno);
        dimno = dim(action,2);
        print(dimno);
    }
\end{verbatim}

本示例将打印输出数组 \verb|action| 第一维的元素数 \verb|3| ，第二维的元素数 \verb|2|。

\section{syserr}

将当前任务设置为错误状态并退出当前任务的执行。

\subsection*{原型}
\begin{verbatim}
void syserr()
\end{verbatim}

\subsubsection*{返回值}
无。

\subsection*{例子}
无。

\section{exit}

退出当前任务的执行。

\subsection*{原型}
\begin{verbatim}
void exit()
\end{verbatim}

\subsubsection*{返回值}
无。

\subsection*{例子}
无。

\section{present}

判断可选参数是否存在。

\subsection*{原型}
\begin{verbatim}
bool present(anytype& arg)
\end{verbatim}

\subsubsection*{arg}
任意类型，要检查的函数可选参数名。

\subsubsection*{返回值}
参数arg存在返回true, 否则返回false。

\subsection*{例子}

\begin{verbatim}
void test_func3(num a, string sv = " ") {
    if (present(sv)) {
        print("sv is set");
    } else {
        print("sv is not set");
    }
}
void main() {
    num nu = 2.0;
    test_func3(nu);
    string ss = "test";
    test_func3(nu, sv = ss);
}
\end{verbatim}

\section{print}

格式化打印字符串。

\subsection*{原型}
\begin{verbatim}
void print(string format, ...)
\end{verbatim}

\subsubsection{format}
格式字符串，其中以\%开头或包含\{\}的字符串或会被后面对应的参数值替换掉，支持以下数据类型的替换
\begin{itemize}
    \item \%a: 对应后面的数组类型变量或值
    \item \%b: 对应后面的bool类型变量或值
    \item \%e: 对应后面的枚举类型变量或值
    \item \%n: 对应后面的num类型变量或值
    \item \%r: 对应后面的记录类型变量或值
    \item \%s: 对应后面的string类型变量或值
    \item \{\}: 对应后面的任意类型变量或值
\end{itemize}	

\subsection*{例子}

\begin{verbatim}
enum Fruit {
    Apple,
    Orange
}

void main() {
    num x = 7;
    print("hello %n %e", x, Fruit::Apple);
    print("hello {} {}", x, Fruit::Orange);
}
\end{verbatim}

\section{raise}

在执行中抛出一个系统错误，或转发一个系统错误。

用户在函数的常规块内可以通过raise语句抛出错误。这里的raise必须带一个错误编号参数，
用户可以使用的错误编号在1到90之内。

在函数错误处理器中可以通过不带参数的raise语句继续抛出错误（包括自动继续抛出的错误）。
这里的raise必须不带参数。

\subsection*{原型}
\begin{verbatim}
void raise(num code = 0)
\end{verbatim}

\subsubsection*{code}
num类型，可选。

\subsubsection*{返回值}
无。

\subsection*{例子}

\begin{verbatim}
const errnum err10 = 10;
void test_raise() {
    print("raise the error\n");
    raise(code = err10);
error {
        if (errno == err10) {
            print("catch the error\n");
        }
    }
}
void main() {
    test_raise();
}
\end{verbatim}

\section{retry}

在错误处理器中使用，重新执行引发错误的语句。

\subsection*{原型}
\begin{verbatim}
void retry()
\end{verbatim}

\subsubsection*{返回值}
无。

\subsection*{例子}
无。

\section{strlen}

计算字符串长度。

\subsection*{原型}
\begin{verbatim}
num strlen(string str)
\end{verbatim}

\subsubsection*{str}
string类型，要计算长度的字符串。

\subsubsection*{返回值}
返回字符串长度。

\subsection*{例子}

\begin{verbatim}
    void main() {
        string a = "Robotics";
        print("%n\n", strlen(a));

        a = "abc";
        print("%n\n", strlen(a));
    }
\end{verbatim}

本示例会分别打印8，3。

\section{timestamp}

获取系统的当前时间戳，精度为0.001s。

\subsection*{原型}
\begin{verbatim}
num timestamp()
\end{verbatim}

\subsubsection*{返回值}
num类型，值为系统的当前时间戳。

\subsection*{例子}
无。

\section{trynext}

 在错误处理器中使用，从引发错误的语句的下一语句开始执行，以恢复程序的正常运行。

\subsection*{原型}
\begin{verbatim}
void trynext()
\end{verbatim}

\subsubsection*{返回值}
无。

\subsection*{例子}
无。

\section{type}

用于获取指定变量的数据类型。

\subsection*{原型}
\begin{verbatim}
string type(anytype data)
\end{verbatim}

\subsubsection*{data}
任意类型的数据。

\subsubsection*{返回值}
返回一个字符串，为给定数据的类型名。

\subsection*{例子}

下面是一个简单的示例：

\begin{verbatim}
    void main() {
        pos p1;
        num a;
        string str;

        print(type(p1));
        print(type(a));
        print(type(str));
    }
\end{verbatim}

本示例会依次打印相应的数据类型名 \verb|pos| 、 \verb|num| 、 \verb|string| 。

\section{waittime}

将当前任务挂起指定的时间。

\subsection*{原型}
\begin{verbatim}
void waittime(num time)
\end{verbatim}

\subsubsection*{time}
指定挂起的秒数，可以为小数。最小时间为0.1ms。

\subsection*{例子}

\begin{verbatim}
    void main() {
        waittime(0.5);
    }
\end{verbatim}

程序睡眠 \verb|0.5| 秒之后退出。
